//这里编写如何将你的需求表单改造的可以用于新建操作
function testRequirementResetFormForCreate() {
    testRequirementCreateOrUpdate = 0;//标注现在是新建操作
    testRequirementEditorForm.down('#testRequirementFormTitle').setValue();//清除了title那一栏的数据
    testRequirementEditorForm.down('#testRequirementFormState').setValue('未完成');
    testRequirementEditorForm.down('#testRequirementFormAuthor').setValue(currentUser);
    testRequirementEditorForm.down('#testRequirementFormCommitButton').setHidden(false);//将表单的按钮显示出来
    testRequirementEditorForm.down('#testRequirementFormSaveButton').setHidden(false);//将表单的按钮显示出来
    testRequirementHideLabel();
    testRequirementEditorForm.down('#testRequirementFormTitle').setEditable(true);//将标题文本框设为可用
    testRequirementEditorForm.down('#testRequirementFormCheckButton').setHidden(true);
    var item = testRequirementLeftTree.getSelectionModel().getSelected();// 得到被选择的行的数组.
    testRequirementEditorIFrame.getFrame().contentWindow.postMessage({
        status: 0,
        projectId: testRequirementProject,
        fileName: item.items[0].data.id
    }, zuulUrl+'/'+webServiceName+'/editor');//将编辑器的内容清空
}

//这里编写如何将你的需求表单改造的可以用于编辑操作或查看操作(在注入数据之前)
function testRequirementResetFormForUpdate(record) {
    testRequirementEditorForm.down('#testRequirementFormTitle').setValue();//清除了title那一栏的数据
    testRequirementEditorForm.down('#testRequirementFormState').setValue();
    testRequirementEditorForm.down('#testRequirementFormAuthor').setValue();
    testRequirementEditorForm.down('#testRequirementFormCheckTime').setValue();
    testRequirementEditorForm.down('#testRequirementFormCreateDate').setValue();
    testRequirementEditorForm.down('#testRequirementFormUpdateDate').setValue();
    testRequirementHideLabel();
    if (record.status =='审核中')//如果该测试需求是审核中话就不可以修改了
        testRequirementEditorForm.down('#testRequirementFormTitle').setEditable(false);
    else
        testRequirementEditorForm.down('#testRequirementFormTitle').setEditable(true);
}

//这里编写如何将你的表单显示到中心区域
function testRequirementShowForm() {
    testRequirementEditorForm.setHidden(false);
    //Ext.getCmp('centerRegion').add(testRequirementEditorForm);//将编辑测试需求的表单显示到中心区域
}

//这里编写点击菜单栏的某个节点之后的操作
function testRequirementItemClick(view, record, item, index, e, eOpts) {// view, record, item, index, e, eOpts这五个参数要写上，用于获得点击节点的信息
    Ext.getCmp('centerRegion').removeAll(false);// 先移除原有的items,不然直接添加会叠加,如果设置为true就是会自动销毁之前的组件，之后就无法在使用这个组件了
    if (record.data.isCreate == 1) {//如果点击的节点是新建节点的话
        testRequirementCreateOrUpdate = 0;//标注现在是新建操作
        testRequirementResetFormForCreate();// 需求表单改造的可以用于新建操作
    } else {//如果不是新建节点的话
        testRequirementCreateOrUpdate = 1;//标注现在是编辑操作
        var data = getTestRequirementDetail(record);//获取当前节点的详细信息
        testRequirementResetFormForUpdate(data);//将表单数据重置
        testRequirementPaddingFormForUpdate(data);//将节点信息填充到表单
        testRequirementEditorIFrame.getFrame().contentWindow.postMessage({
            status: 1,
            projectId: testRequirementProject,
            fileName: data.id
        }, zuulUrl+'/'+webServiceName+'/editor');//点击编辑节点的时候就把该节点的测试需求文档内容显示到编辑器
    }
    testRequirementShowForm();
}

//用于编辑时将获得的数据填充到测试需求的表单(除编辑器外的数据)
function testRequirementPaddingFormForUpdate(data) {
    testRequirementEditorForm.down('#testRequirementFormCommitButton').setHidden(data.authorId != currentUserId||data.status==2);//根据作者是不是自己以及是否在审核中来决定按钮是否显示出来
    testRequirementEditorForm.down('#testRequirementFormSaveButton').setHidden(data.authorId != currentUserId||data.status==2);//根据作者是不是自己以及是否在审核中来决定按钮是否显示出来
    testRequirementEditorForm.down('#testRequirementFormTitle').setValue(data.title);
    testRequirementEditorForm.down('#testRequirementFormState').setValue(data.status);
    testRequirementEditorForm.down('#testRequirementFormAuthor').setValue(data.author);
    testRequirementEditorForm.down('#testRequirementFormCheckTime').setValue(data.checkTime + '次');
    if (data.checkTime > 0)//如果审核次数为0则把查看审核记录的按钮给隐藏掉，不让其查看
        testRequirementEditorForm.down('#testRequirementFormCheckButton').setHidden(false);
    else
        testRequirementEditorForm.down('#testRequirementFormCheckButton').setHidden(true);
    testRequirementEditorForm.down('#testRequirementFormCreateDate').setValue(data.createDate);
    testRequirementEditorForm.down('#testRequirementFormUpdateDate').setValue(data.updateDate);
}

//用于将测试需求的表单的审核人、创建时间、更新时间的显示暂无
function testRequirementHideLabel() {
    testRequirementEditorForm.down('#testRequirementFormCheckTime').setValue('暂无');
    testRequirementEditorForm.down('#testRequirementFormCreateDate').setValue('暂无');
    testRequirementEditorForm.down('#testRequirementFormUpdateDate').setValue('暂无');
}

//获取当前节点的信息
function getTestRequirementDetail(record) {
    var result;
    Ext.Ajax.request({//获取当前节点的信息
        url: zuulUrl + '/' + testServiceName + '/common/testRequirement/detail/' + record.data.id,
        async: false, // ASYNC 是否异步( TRUE 异步 , FALSE 同步)
        success: function (response, opts) {
            var obj = Ext.decode(response.responseText);
            obj.createDate = obj.createDate.replace('T', '  ');
            obj.updateDate = obj.updateDate.replace('T', '  ');
            result = obj;
        },
        failure: function (response, opts) {
        	var obj = Ext.decode(response.responseText);
        	if(obj.code==401||obj.code==402||obj.code==403)
        		Ext.Msg.alert("错误", obj.message);
        	else
        		Ext.Msg.alert("错误", "该功能暂时不可用！");
        }
    });
    return result;
}

//用于提交表单信息
function testRequirementFormSubmit(item, status) {
    if(testRequirementEditorForm.isValid()){
        testRequirementEditorIFrame.getFrame().contentWindow.postMessage({
            status: 2,
            projectId: testRequirementProject,
            fileName: item.items[0].data.id
        }, zuulUrl+'/'+webServiceName+'/editor');//点击保存时将该编辑器的内容上传到文件服务器
        if (testRequirementCreateOrUpdate == 0) {//如果是新建操作的话
            Ext.Ajax.request({
                url: zuulUrl + '/' + testServiceName + '/common/testRequirement',
                method: 'post',
                async: false, // ASYNC 是否异步( TRUE 异步 , FALSE 同步)
                params: {
                    id: item.items[0].data.id,
                    title: testRequirementEditorForm.down('#testRequirementFormTitle').lastValue,
                    author: currentUserId,
                    status: status,
                    parentId: item.items[0].data.parentId,
                    project: testRequirementProject,
                    leaf: 1
                },
                success: function (response, opts) {
                    //成功了的话要把树菜单的节点文本值更改为表单里填写的文本值
                    testRequirementStore.getNodeById(item.items[0].data.id).set('text', testRequirementEditorForm.down('#testRequirementFormTitle').lastValue);
                    item.items[0].data.isCreate = 0;//将该节点的isCreate置为0，说明这个节点不再是新建节点
                    if (status == 0)//如果是保存操作就显示保存成功
                        Ext.Msg.alert("成功", "保存成功");
                    else//不然就显示保存并提交成功
                        Ext.Msg.alert("成功", "保存并提交成功");
                    var data = getTestRequirementDetail(item.items[0]);//重新获取数据
                    testRequirementResetFormForUpdate(data);//将表单数据重置
                    testRequirementPaddingFormForUpdate(data);//将除编辑器外的节点信息填充到表单
                },
                failure: function (response, opts) {
                    var obj = Ext.decode(response.responseText);
                    if(obj.code==401||obj.code==402||obj.code==403)
                        Ext.Msg.alert("错误", obj.message);
                    else
                        Ext.Msg.alert("错误", "该功能暂时不可用！");
                }
            });
        } else {//如果是编辑操作的话
            Ext.Ajax.request({//获取该测试需求的状态描述
                url: zuulUrl + '/' + testServiceName + '/common/testRequirement',
                method: 'put',
                async: false, // ASYNC 是否异步( TRUE 异步 , FALSE 同步)
                params: {
                    id: item.items[0].data.id,
                    title: testRequirementEditorForm.down('#testRequirementFormTitle').lastValue,
                    status: status,
                    userId:currentUserId
                },
                success: function (response, opts) {
                    //成功了的话要把树菜单的节点文本值更改为表单里填写的文本值
                    testRequirementStore.getNodeById(item.items[0].data.id).set('text', testRequirementEditorForm.down('#testRequirementFormTitle').lastValue);
                    if (status == 0)//如果是保存操作就显示保存成功
                        Ext.Msg.alert("成功", "保存成功");
                    else//不然就显示保存并提交成功
                        Ext.Msg.alert("成功", "保存并提交成功");
                    var data = getTestRequirementDetail(item.items[0]);//重新获取数据
                    testRequirementResetFormForUpdate(data);//将表单数据重置
                    testRequirementPaddingFormForUpdate(data);//将节点信息填充到表单

                },
                failure: function (response, opts) {
                    var obj = Ext.decode(response.responseText);
                    if(obj.code==401||obj.code==402||obj.code==403)
                        Ext.Msg.alert("错误", obj.message);
                    else
                        Ext.Msg.alert("错误", "该功能暂时不可用！");
                }
            });
        }
    }else
        Ext.Msg.alert("错误", "表单信息不符合要求！");

}

//用于将树节点更新的值保存到表单中
function testRequirementSynchronize(text) {
    testRequirementEditorForm.down('#testRequirementFormTitle').setValue(text);
    testRequirementEditorForm.down('#testRequirementFormState').setValue('未完成');
}

//将测试需求的节点转换成测试计划
function testReqTransformToDesign(id,name,isIncludeChildren,subject,priority){
    if(name==null||subject==''||priority==null)
        Ext.Msg.alert("错误", "转换信息请填写完全！");
    else{
        Ext.Ajax.request({//获取该测试需求的状态描述
            url: zuulUrl + '/' + testServiceName + '/common/testRequirement/transformToDesign',
            method: 'post',
            async: true, // ASYNC 是否异步( TRUE 异步 , FALSE 同步)
            params: {
                id: id,
                name:name,
                isIncludeChildren: isIncludeChildren,
                subject: subject,
                priority:priority,
                author:currentUserId
            },
            success: function (response, opts) {
                Ext.Msg.alert("成功", "转换成功");
            },
            failure: function (response, opts) {
                var obj = Ext.decode(response.responseText);
                if(obj.code==401||obj.code==402||obj.code==403)
                    Ext.Msg.alert("错误", obj.message);
                else
                    Ext.Msg.alert("错误", "该功能暂时不可用！");
            }
        });
    }
}